Certain semiconductor devices capable of generating a semi-predictable multi-bit output in response to a known input stimulus can be tested by applying the known stimulus over a fixed period of time, and capturing the number of occurrences of particular multi-bit outputs during that time. Each particular multi-bit output being monitored may be referred to as a “bin,” and the number of counts in each bin at the conclusion of the fixed test period can be used to generate a histogram. The histogram can be used in various ways (e.g. numerical analysis) to determine if the device under test (DUT) is acceptable or not, or determine performance parameters.
One such device capable of being tested in the above-described manner is an ADC. An ADC generates a multi-bit output (also referred to herein as a “code”) in response to an analog input signal. A common input stimulus used for testing ADCs is a sine wave, which is relatively easily generated in a “clean” manner (substantially free of spurious frequencies). When the sine wave is applied to the input of the ADC, the input signal varies between a minimum and maximum analog voltage level, and the ADC outputs a multi-bit digital signal in accordance with the analog voltage level. Over time, a histogram can be generated indicative of the acceptability of the ADC.
FIG. 1a illustrates an exemplary block diagram of a high level perspective of test system 100 that may be used to test DUTs and generate histograms as described above. It should be emphasized that FIG. 1a is only exemplary, and that many other test system configurations well-understood to those skilled in the art may also be used. In FIG. 1a, modules 102 may be functional units such as a reference generator, a digital pincard, an analog card, a device power supply (DPS), or instruments such as a waveform generator. The physical connections to modules 102 may be obtained through module connection enabler 104 that includes switch matrix network 106. Switch matrix network 106 may include logic, traces, and pins.
System controller 108 is typically the point of interaction for a user. System controller 108 provides a gateway to site controllers 110 and synchronization of the site controllers in a multi-site/multi-DUT environment. A system controller 108 and multiple site controllers 110 may operate in a master-slave configuration. System controller 108 controls the overall system operation and determines that functions that a particular site controller 110 should perform. Each site controller 110 is itself sufficient to test DUT 112. Site controller 110 controls and monitors the operation of various modules 102 within test site 114. Test site 114 is a collection of modules 102 that service the testing of a single DUT 112. Site controller 110 can control one or multiple test sites 114.
As described above, an input stimulus such as a sine wave may be supplied from a reference generator module (one of the modules 102 in test site 114) to DUT 112. A multi-bit output from the DUT can be fed back to another module 102, where a count of each multi-bit output received from the DUT is accumulated.
FIG. 1b illustrates exemplary test site 114 and DUT 112 in greater detail. In FIG. 1b, DUT 112 is an ADC, and module 102_A generates a sine wave that is fed into the input of the ADC. The ADC generates an N-bit digital output, which is connected to the address line of memory 116 within module 102_B. At every sample of the ADC, the N-bit digital output addresses memory 116, and the count stored at that address is read out, modified (incremented by one), and written back to that address (a read-modify-write or RMW cycle). As shown by exemplary plot 118, in a typical ADC, a sine wave input will result in a nonlinear distribution of counts, with a high number of counts at a small number of minimum and maximum codes/addresses (corresponding to the minimum and maximum values of the sine wave, where the sine wave inflects), and a low number of counts at a large majority of the other addresses (corresponding to those regions where the sine wave is transitioning from low-to-high or from high-to-low). The high number of counts may be hundreds or thousands of times higher than the low number of counts.
If a single memory is used to maintain the counts for all codes/addresses, each address in that memory (i.e. each bin) must be capable of counting up to the maximum number of occurrences expected for any address during the test. In other words, each bin must be capable of storing the highest count expected in any of the bins. This configuration is wasteful of memory resources, however, because as plot 118 demonstrates, most of the bins will store a much lower count.
Therefore, there is a need to organize memory to more efficiently store the expected counts when gathering data for a histogram.